#ifndef SQLFUSE_H
#define SQLFUSE_H

#include <QWidget>
#include "MU_API.h"
#include "src/SoftWare/SQL/SQLHelper.h"
#include <QMessageBox>



typedef std::pair<std::string ,std::string >  ReplaceRule;

namespace Ui {
class SQLFuse;
}

class SQLFuse : public QWidget
{
    Q_OBJECT

public:
    explicit SQLFuse(QWidget *parent = 0);
    ~SQLFuse();

    /**
     * @brief showAMessage
     * @param f
     * @details 弹窗显示一条消息
     */
    void showAMessage(QString f);



private slots:
    void on_tb_opendir1_clicked();

    void on_tb_opendir2_clicked();

    void on_pb_start_clicked();



private:
    Ui::SQLFuse *ui;
    QSqlDatabase _newdb;
    QSqlDatabase _olddb;


    /**
     * @brief Separate
     * @param olddb
     * @param newdb
     * @details 将新老数据库的索引规则整合
     */
    void  Separate();

    /**
     * @brief UpUnion
     * @details 处理更新并集数据
     */
    void UpUnion();

    /**
     * @brief UpDiff
     * @details 处理差集数据
     */
    void UpDiff();

    /**
     * @brief DBs
     * @first old旧的数据库
     * @second 新的数据库
     */
    std::vector<ReplaceRule>  DBs[2];

    /**
     * @brief result
     * @0 相同的集合
     * @1 VC1没有的集合
     * @2 VC2没有的集合
     */
    std::vector<ReplaceRule>  result[3];


    std::string dbTarget;   /* 目标数据库 */
    std::string dbSource;   /* 源数据库 */
};

#endif // SQLFUSE_H
